home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / madwifi / net80211 / if_media.h < prev    next >
C/C++ Source or Header  |  2006-05-11  |  18KB  |  498 lines

  1. /*    $NetBSD: if_media.h,v 1.3 1997/03/26 01:19:27 thorpej Exp $    */
  2. /* $FreeBSD: src/sys/net/if_media.h,v 1.18 2002/07/14 21:58:19 kbyanc Exp $ */
  3. /*    $Id: if_media.h 1441 2006-02-06 16:03:21Z mrenzmann $    */
  4.  
  5. /*
  6.  * Copyright (c) 1997
  7.  *    Jonathan Stone and Jason R. Thorpe.  All rights reserved.
  8.  *
  9.  * This software is derived from information provided by Matt Thomas.
  10.  *
  11.  * Redistribution and use in source and binary forms, with or without
  12.  * modification, are permitted provided that the following conditions
  13.  * are met:
  14.  * 1. Redistributions of source code must retain the above copyright
  15.  *    notice, this list of conditions and the following disclaimer.
  16.  * 2. Redistributions in binary form must reproduce the above copyright
  17.  *    notice, this list of conditions and the following disclaimer in the
  18.  *    documentation and/or other materials provided with the distribution.
  19.  * 3. All advertising materials mentioning features or use of this software
  20.  *    must display the following acknowledgement:
  21.  *    This product includes software developed by Jonathan Stone
  22.  *    and Jason R. Thorpe for the NetBSD Project.
  23.  * 4. The names of the authors may not be used to endorse or promote products
  24.  *    derived from this software without specific prior written permission.
  25.  *
  26.  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
  27.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  28.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  29.  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  30.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  31.  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  32.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  33.  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  34.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  35.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  36.  * SUCH DAMAGE.
  37.  *
  38.  * $Id: if_media.h 1441 2006-02-06 16:03:21Z mrenzmann $
  39.  */
  40.  
  41. #ifndef _NET_IF_MEDIA_H_
  42. #define _NET_IF_MEDIA_H_
  43.  
  44. #include <net80211/ieee80211_linux.h>
  45.  
  46. /*
  47.  * Prototypes and definitions for BSD/OS-compatible network interface
  48.  * media selection.
  49.  *
  50.  * Where it is safe to do so, this code strays slightly from the BSD/OS
  51.  * design.  Software which uses the API (device drivers, basically)
  52.  * shouldn't notice any difference.
  53.  *
  54.  * Many thanks to Matt Thomas for providing the information necessary
  55.  * to implement this interface.
  56.  */
  57.  
  58. struct ifmediareq {
  59.     char ifm_name[IFNAMSIZ];    /* if name, e.g. "en0" */
  60.     int ifm_current;            /* current media options */
  61.     int ifm_mask;            /* don't care mask */
  62.     int ifm_status;            /* media status */
  63.     int ifm_active;            /* active options */
  64.     int ifm_count;            /* # entries in ifm_ulist array */
  65.     int __user *ifm_ulist;        /* media words */
  66. };
  67. #define    SIOCSIFMEDIA    _IOWR('i', 55, struct ifreq)    /* set net media */
  68. #define    SIOCGIFMEDIA    _IOWR('i', 56, struct ifmediareq) /* get net media */
  69.  
  70. #ifdef __KERNEL__
  71.  
  72. #include <sys/queue.h>
  73.  
  74. /*
  75.  * Driver callbacks for media status and change requests.
  76.  */
  77. struct net_device;
  78. typedef    int (*ifm_change_cb_t)(struct net_device *);
  79. typedef    void (*ifm_stat_cb_t)(struct net_device *, struct ifmediareq *);
  80.  
  81. /*
  82.  * In-kernel representation of a single supported media type.
  83.  */
  84. struct ifmedia_entry {
  85.     LIST_ENTRY(ifmedia_entry) ifm_list;
  86.     int ifm_media;        /* description of this media attachment */
  87.     int ifm_data;        /* for driver-specific use */
  88.     void *ifm_aux;        /* for driver-specific use */
  89. };
  90.  
  91. /*
  92.  * One of these goes into a network interface's softc structure.
  93.  * It is used to keep general media state.
  94.  */
  95. struct ifmedia {
  96.     int ifm_mask;            /* mask of changes we don't care about */
  97.     int ifm_media;            /* current user-set media word */
  98.     struct ifmedia_entry *ifm_cur;    /* currently selected media */
  99.     ATH_LIST_HEAD(, ifmedia_entry) ifm_list; /* list of all supported media */
  100.     ifm_change_cb_t    ifm_change;    /* media change driver callback */
  101.     ifm_stat_cb_t ifm_status;    /* media status driver callback */
  102. };
  103.  
  104. /* Initialize an interface's struct if_media field. */
  105. void ifmedia_init(struct ifmedia *, int, ifm_change_cb_t, ifm_stat_cb_t);
  106.  
  107. /* Remove all mediums from a struct ifmedia.  */
  108. void ifmedia_removeall(struct ifmedia *);
  109.  
  110. /* Add one supported medium to a struct ifmedia. */
  111. void ifmedia_add(struct ifmedia *, int, int, void *);
  112.  
  113. /* Add an array (of ifmedia_entry) media to a struct ifmedia. */
  114. void ifmedia_list_add(struct ifmedia *, struct ifmedia_entry *, int);
  115.  
  116. /* Set default media type on initialization. */
  117. void ifmedia_set(struct ifmedia *, int);
  118.  
  119. /* Common ioctl function for getting/setting media, called by driver. */
  120. int ifmedia_ioctl(struct net_device *, struct ifreq *, struct ifmedia *, u_long);
  121.  
  122. #endif /*_KERNEL */
  123.  
  124. /*
  125.  * if_media Options word:
  126.  *    Bits    Use
  127.  *    ----    -------
  128.  *    0-4    Media variant
  129.  *    5-7    Media type
  130.  *    8-15    Type specific options
  131.  *    16-18    Mode (for multi-mode devices)
  132.  *    19    RFU
  133.  *    20-27    Shared (global) options
  134.  *    28-31    Instance
  135.  */
  136.  
  137. /*
  138.  * Ethernet
  139.  */
  140. #define    IFM_ETHER    0x00000020
  141. #define    IFM_10_T    3        /* 10BaseT - RJ45 */
  142. #define    IFM_10_2    4        /* 10Base2 - Thinnet */
  143. #define    IFM_10_5    5        /* 10Base5 - AUI */
  144. #define    IFM_100_TX    6        /* 100BaseTX - RJ45 */
  145. #define    IFM_100_FX    7        /* 100BaseFX - Fiber */
  146. #define    IFM_100_T4    8        /* 100BaseT4 - 4 pair cat 3 */
  147. #define    IFM_100_VG    9        /* 100VG-AnyLAN */
  148. #define    IFM_100_T2    10        /* 100BaseT2 */
  149. #define    IFM_1000_SX    11        /* 1000BaseSX - multi-mode fiber */
  150. #define    IFM_10_STP    12        /* 10BaseT over shielded TP */
  151. #define    IFM_10_FL    13        /* 10BaseFL - Fiber */
  152. #define    IFM_1000_LX    14        /* 1000baseLX - single-mode fiber */
  153. #define    IFM_1000_CX    15        /* 1000baseCX - 150ohm STP */
  154. #define    IFM_1000_T    16        /* 1000baseT - 4 pair cat 5 */
  155. #define    IFM_HPNA_1    17        /* HomePNA 1.0 (1Mb/s) */
  156. /* note 31 is the max! */
  157.  
  158. #define    IFM_ETH_MASTER    0x00000100    /* master mode (1000baseT) */
  159.  
  160. /*
  161.  * Token ring
  162.  */
  163. #define    IFM_TOKEN    0x00000040
  164. #define    IFM_TOK_STP4    3        /* Shielded twisted pair 4m - DB9 */
  165. #define    IFM_TOK_STP16    4        /* Shielded twisted pair 16m - DB9 */
  166. #define    IFM_TOK_UTP4    5        /* Unshielded twisted pair 4m - RJ45 */
  167. #define    IFM_TOK_UTP16    6        /* Unshielded twisted pair 16m - RJ45 */
  168. #define    IFM_TOK_STP100  7        /* Shielded twisted pair 100m - DB9 */
  169. #define    IFM_TOK_UTP100  8        /* Unshielded twisted pair 100m - RJ45 */
  170. #define    IFM_TOK_ETR    0x00000200    /* Early token release */
  171. #define    IFM_TOK_SRCRT    0x00000400    /* Enable source routing features */
  172. #define    IFM_TOK_ALLR    0x00000800    /* All routes / Single route bcast */
  173. #define    IFM_TOK_DTR    0x00002000    /* Dedicated token ring */
  174. #define    IFM_TOK_CLASSIC    0x00004000    /* Classic token ring */
  175. #define    IFM_TOK_AUTO    0x00008000    /* Automatic Dedicate/Classic token ring */
  176.  
  177. /*
  178.  * FDDI
  179.  */
  180. #define    IFM_FDDI    0x00000060
  181. #define    IFM_FDDI_SMF    3        /* Single-mode fiber */
  182. #define    IFM_FDDI_MMF    4        /* Multi-mode fiber */
  183. #define    IFM_FDDI_UTP    5        /* CDDI / UTP */
  184. #define    IFM_FDDI_DA    0x00000100    /* Dual attach / single attach */
  185.  
  186. /*
  187.  * IEEE 802.11 Wireless
  188.  */
  189. #define    IFM_IEEE80211    0x00000080
  190. /* NB: 0,1,2 are auto, manual, none defined below */
  191. #define    IFM_IEEE80211_FH1    3    /* Frequency Hopping 1Mbps */
  192. #define    IFM_IEEE80211_FH2    4    /* Frequency Hopping 2Mbps */
  193. #define    IFM_IEEE80211_DS1    5    /* Direct Sequence 1Mbps */
  194. #define    IFM_IEEE80211_DS2    6    /* Direct Sequence 2Mbps */
  195. #define    IFM_IEEE80211_DS5    7    /* Direct Sequence 5.5Mbps */
  196. #define    IFM_IEEE80211_DS11    8    /* Direct Sequence 11Mbps */
  197. #define    IFM_IEEE80211_DS22    9    /* Direct Sequence 22Mbps */
  198. #define IFM_IEEE80211_OFDM1_50  10      /* OFDM 1.5Mbps */
  199. #define IFM_IEEE80211_OFDM2_25  11      /* OFDM 2.25Mbps */
  200. #define IFM_IEEE80211_OFDM3     12      /* OFDM 3Mbps */
  201. #define IFM_IEEE80211_OFDM4_50  13      /* OFDM 4.5Mbps */
  202. #define IFM_IEEE80211_OFDM6     14      /* OFDM 6Mbps */
  203. #define IFM_IEEE80211_OFDM9     15      /* OFDM 9Mbps */
  204. #define IFM_IEEE80211_OFDM12    16      /* OFDM 12Mbps */
  205. #define IFM_IEEE80211_OFDM13_5  17      /* OFDM 13.5Mpbs */
  206. #define IFM_IEEE80211_OFDM18    18      /* OFDM 18Mbps */
  207. #define IFM_IEEE80211_OFDM24    19      /* OFDM 24Mbps */
  208. #define IFM_IEEE80211_OFDM27    20      /* OFDM 27Mbps */
  209. #define IFM_IEEE80211_OFDM36    21      /* OFDM 36Mbps */
  210. #define IFM_IEEE80211_OFDM48    22      /* OFDM 48Mbps */
  211. #define IFM_IEEE80211_OFDM54    23      /* OFDM 54Mbps */
  212. #define IFM_IEEE80211_OFDM72    24      /* OFDM 72Mbps */
  213.  
  214. #define    IFM_IEEE80211_ADHOC    0x00000100    /* Operate in Adhoc mode */
  215. #define    IFM_IEEE80211_HOSTAP    0x00000200    /* Operate in Host AP mode */
  216. #define    IFM_IEEE80211_IBSS    0x00000400    /* Operate in IBSS mode */
  217. #define    IFM_IEEE80211_WDS    0x00000800    /* Operate in WDS mode */
  218. #define    IFM_IEEE80211_TURBO    0x00001000    /* Operate in turbo mode */
  219. #define    IFM_IEEE80211_MONITOR    0x00002000    /* Operate in monitor mode */
  220.  
  221. /* operating mode for multi-mode devices */
  222. #define    IFM_IEEE80211_11A    0x00010000    /* 5Ghz, OFDM mode */
  223. #define    IFM_IEEE80211_11B    0x00020000    /* Direct Sequence mode */
  224. #define    IFM_IEEE80211_11G    0x00030000    /* 2Ghz, CCK mode */
  225. #define    IFM_IEEE80211_FH    0x00040000    /* 2Ghz, GFSK mode */
  226.  
  227. /*
  228.  * Shared media sub-types
  229.  */
  230. #define    IFM_AUTO    0        /* Autoselect best media */
  231. #define    IFM_MANUAL    1        /* Jumper/dipswitch selects media */
  232. #define    IFM_NONE    2        /* Deselect all media */
  233.  
  234. /*
  235.  * Shared options
  236.  */
  237. #define    IFM_FDX        0x00100000    /* Force full duplex */
  238. #define    IFM_HDX        0x00200000    /* Force half duplex */
  239. #define    IFM_FLAG0    0x01000000    /* Driver defined flag */
  240. #define    IFM_FLAG1    0x02000000    /* Driver defined flag */
  241. #define    IFM_FLAG2    0x04000000    /* Driver defined flag */
  242. #define    IFM_LOOP    0x08000000    /* Put hardware in loopback */
  243.  
  244. /*
  245.  * Masks
  246.  */
  247. #define    IFM_NMASK    0x000000e0    /* Network type */
  248. #define    IFM_TMASK    0x0000001f    /* Media sub-type */
  249. #define    IFM_IMASK    0xf0000000    /* Instance */
  250. #define    IFM_ISHIFT    28        /* Instance shift */
  251. #define    IFM_OMASK    0x0000ff00    /* Type specific options */
  252. #define    IFM_MMASK    0x00070000    /* Mode */
  253. #define    IFM_MSHIFT    16        /* Mode shift */
  254. #define    IFM_GMASK    0x0ff00000    /* Global options */
  255.  
  256. /*
  257.  * Status bits
  258.  */
  259. #define    IFM_AVALID    0x00000001    /* Active bit valid */
  260. #define    IFM_ACTIVE    0x00000002    /* Interface attached to working net */
  261.  
  262. /*
  263.  * Macros to extract various bits of information from the media word.
  264.  */
  265. #define    IFM_TYPE(x)        ((x) & IFM_NMASK)
  266. #define    IFM_SUBTYPE(x)        ((x) & IFM_TMASK)
  267. #define    IFM_TYPE_OPTIONS(x)    ((x) & IFM_OMASK)
  268. #define    IFM_INST(x)        (((x) & IFM_IMASK) >> IFM_ISHIFT)
  269. #define    IFM_OPTIONS(x)        ((x) & (IFM_OMASK|IFM_GMASK))
  270. #define    IFM_MODE(x)        ((x) & IFM_MMASK)
  271.  
  272. #define    IFM_INST_MAX        IFM_INST(IFM_IMASK)
  273.  
  274. /*
  275.  * Macro to create a media word.
  276.  */
  277. #define    IFM_MAKEWORD(type, subtype, options, instance)            \
  278.     ((type) | (subtype) | (options) | ((instance) << IFM_ISHIFT))
  279. #define    IFM_MAKEMODE(mode) \
  280.     (((mode) << IFM_MSHIFT) & IFM_MMASK)
  281.  
  282. /*
  283.  * NetBSD extension not defined in the BSDI API.  This is used in various
  284.  * places to get the canonical description for a given type/subtype.
  285.  *
  286.  * NOTE: all but the top-level type descriptions must contain NO whitespace!
  287.  * Otherwise, parsing these in ifconfig(8) would be a nightmare.
  288.  */
  289. struct ifmedia_description {
  290.     int    ifmt_word;        /* word value; may be masked */
  291.     const char *ifmt_string;    /* description */
  292. };
  293.  
  294. #define    IFM_TYPE_DESCRIPTIONS {                        \
  295.     { IFM_ETHER,        "Ethernet" },                \
  296.     { IFM_TOKEN,        "Token ring" },                \
  297.     { IFM_FDDI,        "FDDI" },                \
  298.     { IFM_IEEE80211,    "IEEE 802.11 Wireless Ethernet" },    \
  299.     { 0, NULL },                            \
  300. }
  301.  
  302. #define    IFM_SUBTYPE_ETHERNET_DESCRIPTIONS {                \
  303.     { IFM_10_T,    "10baseT/UTP" },                \
  304.     { IFM_10_2,    "10base2/BNC" },                \
  305.     { IFM_10_5,    "10base5/AUI" },                \
  306.     { IFM_100_TX,    "100baseTX" },                    \
  307.     { IFM_100_FX,    "100baseFX" },                    \
  308.     { IFM_100_T4,    "100baseT4" },                    \
  309.     { IFM_100_VG,    "100baseVG" },                    \
  310.     { IFM_100_T2,    "100baseT2" },                    \
  311.     { IFM_10_STP,    "10baseSTP" },                    \
  312.     { IFM_10_FL,    "10baseFL" },                    \
  313.     { IFM_1000_SX,    "1000baseSX" },                    \
  314.     { IFM_1000_LX,    "1000baseLX" },                    \
  315.     { IFM_1000_CX,    "1000baseCX" },                    \
  316.     { IFM_1000_T,    "1000baseTX" },                    \
  317.     { IFM_1000_T,    "1000baseT" },                    \
  318.     { IFM_HPNA_1,    "homePNA" },                    \
  319.     { 0, NULL },                            \
  320. }
  321.  
  322. #define    IFM_SUBTYPE_ETHERNET_ALIASES {                    \
  323.     { IFM_10_T,    "UTP" },                    \
  324.     { IFM_10_T,    "10UTP" },                    \
  325.     { IFM_10_2,    "BNC" },                    \
  326.     { IFM_10_2,    "10BNC" },                    \
  327.     { IFM_10_5,    "AUI" },                    \
  328.     { IFM_10_5,    "10AUI" },                    \
  329.     { IFM_100_TX,    "100TX" },                    \
  330.     { IFM_100_T4,    "100T4" },                    \
  331.     { IFM_100_VG,    "100VG" },                    \
  332.     { IFM_100_T2,    "100T2" },                    \
  333.     { IFM_10_STP,    "10STP" },                    \
  334.     { IFM_10_FL,    "10FL" },                    \
  335.     { IFM_1000_SX,    "1000SX" },                    \
  336.     { IFM_1000_LX,    "1000LX" },                    \
  337.     { IFM_1000_CX,    "1000CX" },                    \
  338.     { IFM_1000_T,    "1000TX" },                    \
  339.     { IFM_1000_T,    "1000T" },                    \
  340.     { 0, NULL },                            \
  341. }
  342.  
  343. #define    IFM_SUBTYPE_ETHERNET_OPTION_DESCRIPTIONS {            \
  344.     { 0, NULL },                            \
  345. }
  346.  
  347. #define    IFM_SUBTYPE_TOKENRING_DESCRIPTIONS {                \
  348.     { IFM_TOK_STP4,    "DB9/4Mbit" },                    \
  349.     { IFM_TOK_STP16, "DB9/16Mbit" },                \
  350.     { IFM_TOK_UTP4,    "UTP/4Mbit" },                    \
  351.     { IFM_TOK_UTP16, "UTP/16Mbit" },                \
  352.     { IFM_TOK_STP100, "STP/100Mbit" },                \
  353.     { IFM_TOK_UTP100, "UTP/100Mbit" },                \
  354.     { 0, NULL },                            \
  355. }
  356.  
  357. #define    IFM_SUBTYPE_TOKENRING_ALIASES {                    \
  358.     { IFM_TOK_STP4,    "4STP" },                    \
  359.     { IFM_TOK_STP16, "16STP" },                    \
  360.     { IFM_TOK_UTP4,    "4UTP" },                    \
  361.     { IFM_TOK_UTP16, "16UTP" },                    \
  362.     { IFM_TOK_STP100, "100STP" },                    \
  363.     { IFM_TOK_UTP100, "100UTP" },                    \
  364.     { 0, NULL },                            \
  365. }
  366.  
  367. #define    IFM_SUBTYPE_TOKENRING_OPTION_DESCRIPTIONS {            \
  368.     { IFM_TOK_ETR,    "EarlyTokenRelease" },                \
  369.     { IFM_TOK_SRCRT, "SourceRouting" },                \
  370.     { IFM_TOK_ALLR,    "AllRoutes" },                    \
  371.     { IFM_TOK_DTR,    "Dedicated" },                    \
  372.     { IFM_TOK_CLASSIC,"Classic" },                    \
  373.     { IFM_TOK_AUTO,    " " },                        \
  374.     { 0, NULL },                            \
  375. }
  376.  
  377. #define    IFM_SUBTYPE_FDDI_DESCRIPTIONS {                    \
  378.     { IFM_FDDI_SMF, "Single-mode" },                \
  379.     { IFM_FDDI_MMF, "Multi-mode" },                    \
  380.     { IFM_FDDI_UTP, "UTP" },                    \
  381.     { 0, NULL },                            \
  382. }
  383.  
  384. #define    IFM_SUBTYPE_FDDI_ALIASES {                    \
  385.     { IFM_FDDI_SMF,    "SMF" },                    \
  386.     { IFM_FDDI_MMF,    "MMF" },                    \
  387.     { IFM_FDDI_UTP,    "CDDI" },                    \
  388.     { 0, NULL },                            \
  389. }
  390.  
  391. #define    IFM_SUBTYPE_FDDI_OPTION_DESCRIPTIONS {                \
  392.     { IFM_FDDI_DA, "Dual-attach" },                    \
  393.     { 0, NULL },                            \
  394. }
  395.  
  396. #define    IFM_SUBTYPE_IEEE80211_DESCRIPTIONS {                \
  397.     { IFM_IEEE80211_FH1, "FH/1Mbps" },                \
  398.     { IFM_IEEE80211_FH2, "FH/2Mbps" },                \
  399.     { IFM_IEEE80211_DS1, "DS/1Mbps" },                \
  400.     { IFM_IEEE80211_DS2, "DS/2Mbps" },                \
  401.     { IFM_IEEE80211_DS5, "DS/5.5Mbps" },                \
  402.     { IFM_IEEE80211_DS11, "DS/11Mbps" },                \
  403.     { IFM_IEEE80211_DS22, "DS/22Mbps" },                \
  404.     { IFM_IEEE80211_OFDM1_50, "OFDM/1.50Mbps" },            \
  405.     { IFM_IEEE80211_OFDM2_25, "OFDM/2.25Mbps" },            \
  406.     { IFM_IEEE80211_OFDM3, "OFDM/3Mbps" },                \
  407.     { IFM_IEEE80211_OFDM4_50, "OFDM/4.5Mbps" },            \
  408.     { IFM_IEEE80211_OFDM6, "OFDM/6Mbps" },                \
  409.     { IFM_IEEE80211_OFDM9, "OFDM/9Mbps" },                \
  410.     { IFM_IEEE80211_OFDM12, "OFDM/12Mbps" },            \
  411.     { IFM_IEEE80211_OFDM13_5, "OFDM/13.5Mbps" },            \
  412.     { IFM_IEEE80211_OFDM18, "OFDM/18Mbps" },            \
  413.     { IFM_IEEE80211_OFDM24, "OFDM/24Mbps" },            \
  414.     { IFM_IEEE80211_OFDM27, "OFDM/27Mbps" },            \
  415.     { IFM_IEEE80211_OFDM36, "OFDM/36Mbps" },            \
  416.     { IFM_IEEE80211_OFDM48, "OFDM/48Mbps" },            \
  417.     { IFM_IEEE80211_OFDM54, "OFDM/54Mbps" },            \
  418.     { IFM_IEEE80211_OFDM72, "OFDM/72Mbps" },            \
  419.     { 0, NULL },                            \
  420. }
  421.  
  422. #define    IFM_SUBTYPE_IEEE80211_ALIASES {                    \
  423.     { IFM_IEEE80211_FH1, "FH1" },                    \
  424.     { IFM_IEEE80211_FH2, "FH2" },                    \
  425.     { IFM_IEEE80211_FH1, "FrequencyHopping/1Mbps" },        \
  426.     { IFM_IEEE80211_FH2, "FrequencyHopping/2Mbps" },        \
  427.     { IFM_IEEE80211_DS1, "DS1" },                    \
  428.     { IFM_IEEE80211_DS2, "DS2" },                    \
  429.     { IFM_IEEE80211_DS5, "DS5.5" },                    \
  430.     { IFM_IEEE80211_DS11, "DS11" },                    \
  431.     { IFM_IEEE80211_DS22, "DS22" },                    \
  432.     { IFM_IEEE80211_DS1, "DirectSequence/1Mbps" },            \
  433.     { IFM_IEEE80211_DS2, "DirectSequence/2Mbps" },            \
  434.     { IFM_IEEE80211_DS5, "DirectSequence/5.5Mbps" },        \
  435.     { IFM_IEEE80211_DS11, "DirectSequence/11Mbps" },        \
  436.     { IFM_IEEE80211_DS22, "DirectSequence/22Mbps" },        \
  437.     { IFM_IEEE80211_OFDM1_50, "OFDM1.50Mpbs" },            \
  438.     { IFM_IEEE80211_OFDM2_25, "OFDM2.25Mbps" },            \
  439.     { IFM_IEEE80211_OFDM3, "OFDM3Mbps" },                \
  440.     { IFM_IEEE80211_OFDM4_50, "OFDM4.5Mbps" },            \
  441.     { IFM_IEEE80211_OFDM6, "OFDM6" },                \
  442.     { IFM_IEEE80211_OFDM9, "OFDM9" },                \
  443.     { IFM_IEEE80211_OFDM12, "OFDM12" },                \
  444.     { IFM_IEEE80211_OFDM13_5, "OFDM13.5Mbps" },            \
  445.     { IFM_IEEE80211_OFDM18, "OFDM18" },                \
  446.     { IFM_IEEE80211_OFDM24, "OFDM24" },                \
  447.     { IFM_IEEE80211_OFDM27, "OFDM27" },                \
  448.     { IFM_IEEE80211_OFDM36, "OFDM36" },                \
  449.     { IFM_IEEE80211_OFDM48, "OFDM48" },                \
  450.     { IFM_IEEE80211_OFDM54, "OFDM54" },                \
  451.     { IFM_IEEE80211_OFDM72, "OFDM72" },                \
  452.     { IFM_IEEE80211_DS1, "CCK1" },                    \
  453.     { IFM_IEEE80211_DS2, "CCK2" },                    \
  454.     { IFM_IEEE80211_DS5, "CCK5.5" },                \
  455.     { IFM_IEEE80211_DS11, "CCK11" },                \
  456.     { 0, NULL },                            \
  457. }
  458.  
  459. #define    IFM_SUBTYPE_IEEE80211_OPTION_DESCRIPTIONS {            \
  460.     { IFM_IEEE80211_ADHOC, "adhoc" },                \
  461.     { IFM_IEEE80211_HOSTAP, "hostap" },                \
  462.     { IFM_IEEE80211_IBSS, "ibss" },                    \
  463.     { IFM_IEEE80211_WDS, "wds" },                    \
  464.     { IFM_IEEE80211_TURBO, "turbo" },                \
  465.     { 0, NULL },                            \
  466. }
  467.  
  468. #define    IFM_SUBTYPE_IEEE80211_MODE_DESCRIPTIONS {            \
  469.     { IFM_IEEE80211_11A, "11a" },                    \
  470.     { IFM_IEEE80211_11B, "11b" },                    \
  471.     { IFM_IEEE80211_11G, "11g" },                    \
  472.     { 0, NULL },                            \
  473. }
  474.  
  475. #define    IFM_SUBTYPE_SHARED_DESCRIPTIONS {                \
  476.     { IFM_AUTO,    "autoselect" },                    \
  477.     { IFM_MANUAL,    "manual" },                    \
  478.     { IFM_NONE,    "none" },                    \
  479.     { 0, NULL },                            \
  480. }
  481.  
  482. #define    IFM_SUBTYPE_SHARED_ALIASES {                    \
  483.     { IFM_AUTO,    "auto" },                    \
  484.     { 0, NULL },                            \
  485. }
  486.  
  487. #define    IFM_SHARED_OPTION_DESCRIPTIONS {                \
  488.     { IFM_FDX,    "full-duplex" },                \
  489.     { IFM_HDX,    "half-duplex" },                \
  490.     { IFM_FLAG0,    "flag0" },                    \
  491.     { IFM_FLAG1,    "flag1" },                    \
  492.     { IFM_FLAG2,    "flag2" },                    \
  493.     { IFM_LOOP,    "hw-loopback" },                \
  494.     { 0, NULL },                            \
  495. }
  496.  
  497. #endif    /* _NET_IF_MEDIA_H_ */
  498.